/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Desafios;

import Personagem.Mensageiro;
import Personagem.Personagem;
import Recurso.Recurso;
import java.util.Random;

/**
 *
 * @author Kezia Lobo
 */
public class Desafios {

    private String nome;
    private String descricaoDoDesafio;
    private Recurso utilizarItem;
    private int perderForca;

    public Desafios() {
    }

    public Desafios(Recurso Utilizar, int perderForca) {
        
        this.utilizarItem = Utilizar;
        this.perderForca = perderForca;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getDescricaoDoDesafio() {
        return descricaoDoDesafio;
    }

    public void setDescricaoDoDesafio(String descricaoDoDesafio) {
        this.descricaoDoDesafio = descricaoDoDesafio;
    }

    public Recurso getUtilizarItem() {
        return utilizarItem;
    }

    public void setUtilizarItem(Recurso utilizarItem) {
        this.utilizarItem = utilizarItem;
    }

    public int getPerderForca() {
        return perderForca;
    }

    public void setPerderForca(int perderForca) {
        this.perderForca = perderForca;
    }

    public boolean enfrentarDesafio(Mensageiro personagem) {
        boolean passou = false;
        System.out.println("*********** Desafio Recurso!! ***************");

        try {
            for (int i = 0; i < personagem.getItens().size(); i++) {
                if (personagem.getItens().get(i).getNome().equalsIgnoreCase(getUtilizarItem().getNome())) {
                    personagem.UsarItem(personagem.getItens().get(i));
                    personagem.setVida(personagem.getVida() - getPerderForca());
                    passou = true;
                    System.out.println("Voce passou Utilizando o Item " + getUtilizarItem().getNome());
                } else {
                    System.out.println("Voce morreu pois nao possuia o Item " + getUtilizarItem().getNome());
                    System.exit(0);
                    passou = false;
                }
            }
        } catch (NullPointerException e) {
            System.out.println("Voce morreu pois nao possuia o necessario");
            System.exit(0);
        }
        return passou;
    }

    public void pontosVidaBatalha(Personagem mensageiro, int dano, Personagem inimigo) {

        if (dano <= 0) {
            inimigo.setVida(inimigo.getVida() - (dano * -1));
        } else {
            mensageiro.setVida(mensageiro.getVida() - dano);
        }

    }

    public int definirAtaque() {
        Random ataque = new Random();
        return ataque.nextInt(30);
    }

    public int enfrentarBatalha(Personagem mensageiro, Personagem inimigo, int ataqueMensageiro, int ataqueInimigo) {
        int ganhador = 0;
        mensageiro.setAtaque(ataqueMensageiro);
        inimigo.setAtaque(ataqueInimigo);
        System.out.println("Voce encontrou um Inimigo... Começa a batalha haha");

        while (mensageiro.getVida() > 0 || inimigo.getVida() > 0) {

            if (mensageiro.getVida() > 0) {
                System.out.println("\n  >>>> Mensageiro está atacando.");
                if (mensageiro.getAtaque() > inimigo.getDefesa()) {
                    inimigo.setVida(inimigo.getVida() - mensageiro.getAtaque());
                    System.out.println("*** Você tirou " + mensageiro.getAtaque() + " do seu inimigo. "
                            + "Ele está com " + inimigo.getVida() + " de vida");
                }

                if (mensageiro.getAtaque() <= inimigo.getDefesa()) {
                    System.out.println("*** Inimigo bloqueou seu ataque");
                }
            } else {
                break;
            }

            if (inimigo.getVida() > 0) {
                System.out.println(">>>>> Inimigo está atacando.");
                if (inimigo.getAtaque() > mensageiro.getDefesa()) {
                    mensageiro.setVida(mensageiro.getVida() - inimigo.getAtaque());
                    System.out.println("*** Você perdeu " + inimigo.getAtaque() + " de vida."
                            + " Você está com " + mensageiro.getVida() + " de hp");
                }
                if (inimigo.getAtaque() <= mensageiro.getDefesa()) {
                    System.out.println("*** Você blogueou o ataque.");
                }
            } else {
                System.out.println("----------  Parabéns você venceu a batalha bizonho ----------- !!!!");
                break;
            }

            mensageiro.setAtaque(definirAtaque());
            inimigo.setAtaque(definirAtaque());
        }

        if (mensageiro.getVida() <= 0) {
            ganhador = 2;
        }
        if (inimigo.getVida() <= 0) {
            ganhador = 1;
        }

        return ganhador;
    }
}
